From: Cosimo Cecchi Date: Tue, 2 Jul 2013 06:54:53 +0000 (-0700) Subject: Load JS from GResource X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3119 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1ebb162a00bf6c4b0;p=gnome-shell.git Load JS from GResource Since gjs can now load JS from a GResource, compile it in the gnome-shell binary. This should be a bit faster, and make life easier with JHBuild. --- diff --git a/.gitignore b/.gitignore index 29803e711..be11b0c93 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,8 @@ docs/reference/*/xml/ docs/reference/shell/doc-gen-* gtk-doc.make js/misc/config.js +js/js-resources.c +js/js-resources.h intltool-extract.in intltool-merge.in intltool-update.in diff --git a/configure.ac b/configure.ac index 2b9508316..acc7200e1 100644 --- a/configure.ac +++ b/configure.ac @@ -148,6 +148,9 @@ AC_SUBST(MUTTER_TYPELIB_DIR) GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0` AC_SUBST(GJS_CONSOLE) +GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` +AC_SUBST(GLIB_COMPILE_RESOURCES) + AC_CHECK_FUNCS(fdwalk) AC_CHECK_FUNCS(mallinfo) AC_CHECK_HEADERS([sys/resource.h]) diff --git a/js/Makefile.am b/js/Makefile.am index 677af7895..fce6c58aa 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -1,7 +1,5 @@ NULL = - -EXTRA_DIST = misc/config.js.in -CLEANFILES = misc/config.js +BUILT_SOURCES = misc/config.js: misc/config.js.in Makefile [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ @@ -14,110 +12,22 @@ misc/config.js: misc/config.js.in Makefile -e "s|[@]sysconfdir@|$(sysconfdir)|g" \ $< > $@ -jsdir = $(pkgdatadir)/js +js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/js-resources.gresource.xml) +js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name shell_js_resources $< +js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name shell_js_resources $< + +js_built_sources = js-resources.c js-resources.h + +BUILT_SOURCES += $(js_built_sources) + +all-local: $(js_built_sources) + +js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files)) -nobase_dist_js_DATA = \ - gdm/authPrompt.js \ - gdm/batch.js \ - gdm/fingerprint.js \ - gdm/loginDialog.js \ - gdm/oVirt.js \ - gdm/realmd.js \ - gdm/util.js \ - extensionPrefs/main.js \ - misc/config.js \ - misc/extensionUtils.js \ - misc/fileUtils.js \ - misc/gnomeSession.js \ - misc/hash.js \ - misc/history.js \ - misc/jsParse.js \ - misc/loginManager.js \ - misc/modemManager.js \ - misc/objectManager.js \ - misc/params.js \ - misc/smartcardManager.js \ - misc/util.js \ - perf/core.js \ - ui/altTab.js \ - ui/animation.js \ - ui/appDisplay.js \ - ui/appFavorites.js \ - ui/backgroundMenu.js \ - ui/background.js \ - ui/boxpointer.js \ - ui/calendar.js \ - ui/checkBox.js \ - ui/ctrlAltTab.js \ - ui/dash.js \ - ui/dateMenu.js \ - ui/dnd.js \ - ui/endSessionDialog.js \ - ui/extensionSystem.js \ - ui/extensionDownloader.js \ - ui/environment.js \ - ui/focusCaretTracker.js\ - ui/ibusCandidatePopup.js\ - ui/grabHelper.js \ - ui/iconGrid.js \ - ui/keyboard.js \ - ui/layout.js \ - ui/lightbox.js \ - ui/lookingGlass.js \ - ui/magnifier.js \ - ui/magnifierDBus.js \ - ui/main.js \ - ui/messageTray.js \ - ui/modalDialog.js \ - ui/separator.js \ - ui/sessionMode.js \ - ui/shellEntry.js \ - ui/shellMountOperation.js \ - ui/slider.js \ - ui/notificationDaemon.js \ - ui/osdWindow.js \ - ui/overview.js \ - ui/overviewControls.js \ - ui/panel.js \ - ui/panelMenu.js \ - ui/pointerWatcher.js \ - ui/popupMenu.js \ - ui/remoteSearch.js \ - ui/remoteMenu.js \ - ui/runDialog.js \ - ui/screencast.js \ - ui/screenshot.js \ - ui/screenShield.js \ - ui/scripting.js \ - ui/search.js \ - ui/shellDBus.js \ - ui/status/accessibility.js \ - ui/status/brightness.js \ - ui/status/keyboard.js \ - ui/status/network.js \ - ui/status/power.js \ - ui/status/rfkill.js \ - ui/status/volume.js \ - ui/status/bluetooth.js \ - ui/status/screencast.js \ - ui/status/system.js \ - ui/switcherPopup.js \ - ui/tweener.js \ - ui/unlockDialog.js \ - ui/userWidget.js \ - ui/viewSelector.js \ - ui/windowAttentionHandler.js \ - ui/windowManager.js \ - ui/workspace.js \ - ui/workspaceThumbnail.js \ - ui/workspacesView.js \ - ui/workspaceSwitcherPopup.js \ - ui/xdndHandler.js \ - ui/components/__init__.js \ - ui/components/autorunManager.js \ - ui/components/automountManager.js \ - ui/components/networkAgent.js \ - ui/components/polkitAgent.js \ - ui/components/telepathyClient.js \ - ui/components/keyring.js \ +EXTRA_DIST = \ + $(js_resource_dist_files) \ + js-resources.gresource.xml \ + misc/config.js.in \ $(NULL) diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml new file mode 100644 index 000000000..2c3fce8e1 --- /dev/null +++ b/js/js-resources.gresource.xml @@ -0,0 +1,108 @@ + + + + gdm/authPrompt.js + gdm/batch.js + gdm/fingerprint.js + gdm/loginDialog.js + gdm/oVirt.js + gdm/realmd.js + gdm/util.js + extensionPrefs/main.js + misc/config.js + misc/extensionUtils.js + misc/fileUtils.js + misc/gnomeSession.js + misc/hash.js + misc/history.js + misc/jsParse.js + misc/loginManager.js + misc/modemManager.js + misc/objectManager.js + misc/params.js + misc/smartcardManager.js + misc/util.js + perf/core.js + ui/altTab.js + ui/animation.js + ui/appDisplay.js + ui/appFavorites.js + ui/backgroundMenu.js + ui/background.js + ui/boxpointer.js + ui/calendar.js + ui/checkBox.js + ui/ctrlAltTab.js + ui/dash.js + ui/dateMenu.js + ui/dnd.js + ui/endSessionDialog.js + ui/extensionSystem.js + ui/extensionDownloader.js + ui/environment.js + ui/focusCaretTracker.js + ui/ibusCandidatePopup.js + ui/grabHelper.js + ui/iconGrid.js + ui/keyboard.js + ui/layout.js + ui/lightbox.js + ui/lookingGlass.js + ui/magnifier.js + ui/magnifierDBus.js + ui/main.js + ui/messageTray.js + ui/modalDialog.js + ui/separator.js + ui/sessionMode.js + ui/shellEntry.js + ui/shellMountOperation.js + ui/slider.js + ui/notificationDaemon.js + ui/osdWindow.js + ui/overview.js + ui/overviewControls.js + ui/panel.js + ui/panelMenu.js + ui/pointerWatcher.js + ui/popupMenu.js + ui/remoteSearch.js + ui/remoteMenu.js + ui/runDialog.js + ui/screencast.js + ui/screenshot.js + ui/screenShield.js + ui/scripting.js + ui/search.js + ui/shellDBus.js + ui/status/accessibility.js + ui/status/brightness.js + ui/status/keyboard.js + ui/status/network.js + ui/status/power.js + ui/status/rfkill.js + ui/status/volume.js + ui/status/bluetooth.js + ui/status/screencast.js + ui/status/system.js + ui/switcherPopup.js + ui/tweener.js + ui/unlockDialog.js + ui/userWidget.js + ui/viewSelector.js + ui/windowAttentionHandler.js + ui/windowManager.js + ui/workspace.js + ui/workspaceThumbnail.js + ui/workspacesView.js + ui/workspaceSwitcherPopup.js + ui/xdndHandler.js + ui/components/__init__.js + ui/components/autorunManager.js + ui/components/automountManager.js + ui/components/networkAgent.js + ui/components/polkitAgent.js + ui/components/telepathyClient.js + ui/components/keyring.js + + diff --git a/src/Makefile.am b/src/Makefile.am index a9f4c6271..fad9f17b2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -75,8 +75,7 @@ gnome_shell_cflags = \ -DDATADIR=\"$(datadir)\" \ -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \ -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \ - -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \ - -DJSDIR=\"$(pkgdatadir)/js\" + -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" privlibdir = $(pkglibdir) privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la @@ -171,6 +170,8 @@ libgnome_shell_sources = \ shell-util.c \ shell-window-tracker.c \ shell-wm.c \ + ../js/js-resources.c \ + ../js/js-resources.h \ $(NULL) libgnome_shell_la_SOURCES = $(libgnome_shell_sources) @@ -207,7 +208,7 @@ endif HAVE_MUTTER_WAYLAND libgnome_shell_js_la_SOURCES = \ shell-js.h \ - shell-js.cpp \ + shell-js.cpp \ $(NULL) libgnome_shell_js_la_LIBADD = \ diff --git a/src/shell-global.c b/src/shell-global.c index e453df2cd..fd060b3d6 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -283,9 +283,16 @@ shell_global_init (ShellGlobal *global) NULL); ca_context_open (global->sound_context); - if (!shell_js) - shell_js = JSDIR; - search_path = g_strsplit (shell_js, ":", -1); + if (shell_js) + { + search_path = g_strsplit (shell_js, ":", -1); + } + else + { + search_path = g_malloc0 (2 * sizeof (char *)); + search_path[0] = g_strdup ("resource:///org/gnome/shell"); + } + global->js_context = g_object_new (GJS_TYPE_CONTEXT, "search-path", search_path, "js-version", "1.8",